package com.xuelang.pipeline.artifact.domain.resource.repository;

import com.xuelang.pipeline.artifact.client.common.result.PageRecord;
import com.xuelang.pipeline.artifact.client.resource.dto.ArtifactNamespaceQuery;
import com.xuelang.pipeline.artifact.domain.resource.ArtifactNamespace;

import java.util.List;

/**
 * 镜像仓库命名空间仓库
 *
 * @author liuyuan.ly
 * @since 2024/5/14 9:48
 */
public interface ArtifactNamespaceRepository {
    /**
     * 获取镜像仓库命名空间列表，有过滤条件
     *
     * @param currentPage
     * @param pageSize
     * @param artifactNamespaceQuery
     * @return
     */
    PageRecord<ArtifactNamespace> pageList(long currentPage, long pageSize, ArtifactNamespaceQuery artifactNamespaceQuery);
    /**
     * 获取镜像仓库命名空间列表，有过滤条件
     *
     * @param artifactNamespaceQuery
     * @return
     */
    List<ArtifactNamespace> list(ArtifactNamespaceQuery artifactNamespaceQuery);

    /**
     * 新增镜像仓库命名空间
     *
     * @param artifactNamespace
     * @return
     */
    Boolean save(ArtifactNamespace artifactNamespace);

    /**
     * 更新镜像仓库命名空间
     *
     * @param artifactNamespace
     * @return
     */
    Boolean update(ArtifactNamespace artifactNamespace);
    /**
     * 删除镜像仓库命名空间
     *
     * @param uuid
     * @return
     */
    Boolean delete(String uuid);

    /**
     * 判断镜像仓库命名空间名称是否存在
     *
     * @param artifactUuid
     * @param uuid
     * @param name
     * @return
     */
    Boolean existsName(String artifactUuid, String uuid, String name);
    /**
     * 查询镜像仓库命名空间
     *
     * @param uuid
     * @return
     */
    ArtifactNamespace query(String uuid);

}
